18739
945
Tato otázka již má odpovědi zde:
Express js - nelze přesměrovat
(4 odpovědi)
Uzavřeno před 7 lety.
Používám passportjs s middlewarem níže. Předpokládá se kontrola, zda se uživatel přihlašuje, když požaduje určité věci. Pokud není přihlášen, měl by být přesměrován na přihlašovací stránku.
Mám trasu požadavku takto:
app.put ('/ fantasyteams /: fantasyTeamId', auth.requiresLogin, fantasyteams.update);
Tato trasa bude volána, když se uživatel pokusí na webu aktualizovat prostředek s názvem Fantasy Team
auth.requiresLogin je následující middleware:
exports.requiresLogin = funkce (požadavek, res, další) {
if (req.isAuthenticated ()) {
návrat next ()
}
vrátit res.redirect ("/ přihlášení");
};
Po přihlášení uživatele jsem simuloval ukončení relace odstraněním cookie relace. Poté jsem prostřednictvím webu odeslal požadavek PUT '/ fantasyteams / 123' na aktualizaci fantasy týmu číslo 123.
fantasyteams.update je jednoduše operace uložení mongodb / mongoose:
exports.update = funkce (požadavek, res) {
var fantasyteam = požadavek fantasyteam;
fantasyteam = _.extend (fantasyteam, req.body);
fantasyteam.save (funkce (chyba) {
res.jsonp (fantasyteam);
});
};
Jak se dalo očekávat, obslužná rutina trasy (app.put ...) výše zachytila ​​požadavek, předejte jej middlewaru auth.requiresLogin a zkontrolujte, zda je uživatel přihlášen. Takže se ukázalo, že uživatel není přihlášen, protože jsem smazal jeho cookie relace. res.redirect se volá podle očekávání. Web však nepřesměrovává na přihlašovací stránku. Vidím to v protokolech příkazů node.js:
PUT / přihlášení 404 328ms
Co jsem udělal špatně? 
Vypadá to, že problém je v tom, že nemáte obslužnou rutinu trasy pro PUT / přihlášení. Původní požadavek byl put, takže při přesměrování je stále součástí stejného požadavku „put“ z prohlížeče. Stačí přidat obslužný program pro put / post / cokoli s app.all ('/ signin')
3
|
Toto není odpověď, kterou hledáte? Projděte si další otázky označené soubory cookie relace node.js, které vyjadřují passport.js, nebo položte vlastní otázku.